はじめに
今回もPython初心者による資産シミュレーター開発記録です。今回はグラフを作成していきます。
正直に言うと、私はPythonもグラフ作成も最初は全く分かりませんでした。
「Pythonで資産管理ツールを作ってみたい」
という思いだけで始めましたが、分からないことだらけだったため、我が相棒チャッピーさん(ChatGPT)に一つずつ教えてもらいながら開発を進めています。
前回までの記事では、
- 入力チェック
- 複利計算
- 年ごとの資産推移データ作成
まで実装しました。
今回は、その計算結果をグラフ化して見える化していきます。
数字だけを見るよりも、資産がどのように成長していくのかをグラフで確認できる方が、シミュレーターとして分かりやすくなります。
matplotlibでグラフを作成する
Pythonにはグラフを作成するためのライブラリがあります。
今回は「matplotlib」を使用しました。
まずインストールします。
python3 -m pip install matplotlib
そしてPythonで読み込みます。
import matplotlib.pyplot as plt
matplotlibを使うことで、Pythonで計算したデータを折れ線グラフなどで表示できます。
今回作成した資産シミュレーターのコード
今回完成したコードはこちらです。
import matplotlib.pyplot as plt
import mplcursors
from matplotlib import rcParams
# 日本語表示対応
rcParams['font.family'] = 'Hiragino Sans'
# 入力チェック関数
def positive_number(message):
while True:
try:
value = float(input(message))
if value > 0:
return value
else:
print('0より大きい数値を入力してください')
except ValueError:
print('数字を入力してください')
# 入力
assets = positive_number('投資資産額を入力してください>')
rate = positive_number('想定利回りを入力してください(%)>')
period = int(positive_number('運用期間を入力してください(年)>'))
# 複利計算
growth = 1 + rate / 100
amounts = []
years = []
for i in range(1, period + 1):
years.append(i)
result = assets * growth ** i
amounts.append(result)
print(f'{i}年後:{int(result):,}円')
# 結果表示
final_amount = amounts[-1]
profit = final_amount - assets
print()
print('======================')
print('資産シミュレーション結果')
print('======================')
print(f'投資元本:{int(assets):,}円')
print(f'{period}年後の資産額:{int(final_amount):,}円')
print(f'運用益:{int(profit):,}円')
# グラフ表示(万円換算)
amounts_man = [amount / 10000 for amount in amounts]
plt.plot(years,amounts_man,marker="o")
# 元本ライン表示
principal_man = assets / 10000
plt.axhline(y=principal_man,linestyle="--")
plt.xlabel('運用年数')
plt.ylabel('資産額(万円)')
plt.title('資産シミュレーション')
plt.grid()
# 結果をグラフ内に表示
plt.text(
0.05,
0.95,
f'投資元本:{assets:,.0f}円\n'
f'{period}年後の資産額:{final_amount:,.0f}円\n'
f'運用益:{profit:,.0f}円',
transform=plt.gca().transAxes,
fontsize=10,
verticalalignment='top',
bbox=dict(boxstyle='round')
)
# カーソル表示
cursor = mplcursors.cursor(hover=True)
@cursor.connect("add")
def on_add(sel):
x, y = sel.target
sel.annotation.set_text(f'{int(x)}年目\n{y:.0f}万円')
plt.show()
グラフ表示で工夫したポイント
① 資産額を万円表示に変更
最初は円単位で表示していました。
しかし、
2653298円
では少し見づらいため、グラフでは万円単位に変更しました。
amounts_man = [amount / 10000 for amount in amounts]
これにより、
265万円
のように直感的に確認できます。
② 投資元本ラインを追加
資産の増加だけではなく、
「最初に投資した金額からどれだけ増えたのか」
を見るために、元本ラインを追加しました。
principal_man = assets / 10000
plt.axhline(y=principal_man,linestyle="--")
これで、
- 投資した金額
- 複利によって増えた金額
を比較できます。
③ 結果をグラフ内に表示
グラフを見るだけで結果が分かるように、
- 投資元本
- 最終資産額
- 運用益
を表示しました。
plt.text()
を使うことで、グラフ内に文章を表示できます。
④ カーソルで資産額を確認
最後に「mplcursors」というライブラリを追加しました。
インストール:
python3 -m pip install mplcursors
これにより、グラフ上のポイントにカーソルを合わせると、
10年目
163万円
のように、その時点の資産額を確認できます。
今回完成したこと
今回で資産シミュレーターは、
✅ 投資金額入力
✅ 利回り入力
✅ 運用期間入力
✅ 複利計算
✅ 資産推移作成
✅ グラフ表示
✅ 元本との比較
✅ 結果表示
✅ カーソルによる確認
まで完成しました。
現在はターミナル上で動くPythonプログラムですが、次のステップではこれをWebアプリ化していきます。
最終的には、ブラウザから誰でも使える資産シミュレーターを作ることが目標です。
まとめ
今回はmatplotlibを使って、資産シミュレーターにグラフ機能を追加しました。
Python初心者の私でも、AIに教えてもらいながら少しずつコードを理解し、実際に動くツールを作ることができました。
最初は分からなかったコードも、少しずつ組み合わせていくことで、自分だけのツール作成につながっています。
次回は、この資産シミュレーターをWebアプリ化するため、Flaskを使った開発に挑戦していきます。







コメント